package com.roy.minimq.remoting.domain.entity;

import com.roy.minimq.remoting.exception.RemotingException;
import com.roy.minimq.remoting.service.InvokeCallback;

import java.util.List;

/**
 * @author ：楼兰
 * @date ：Created in 2021/8/9
 * @description:
 **/
public interface RemotingClient extends RemotingService {

    List<String> getNameServerAddressList();

    RemotingCommand invokeSync(final String addr, final RemotingCommand request,
                               final long timeoutMillis) throws RemotingException;

    void invokeAsync(final String addr, final RemotingCommand request, final long timeoutMillis,
                     final InvokeCallback invokeCallback) throws RemotingException;

    void invokeOneway(final String addr, final RemotingCommand request, final long timeoutMillis) throws RemotingException;


}
